<?php

use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Permission;

class PermissionSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $permissions = [
            //一级菜单权限
            [
                'display_name' => '主面板',
                'name' => 'backend.dashboard',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '运营',
                'name' => 'backend.operative',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '文章',
                'name' => 'backend.article',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '设置',
                'name' => 'backend.setting',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            //仪表盘
            [
                'display_name' => '仪表盘',
                'name' => 'backend.dashboard.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            //后台菜单
            [
                'display_name' => '后台菜单列表',
                'name' => 'backend.menu.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '后台菜单创建界面',
                'name' => 'backend.menu.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以创建后台菜单',
                'name' => 'backend.menu.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '后台菜单编辑界面',
                'name' => 'backend.menu.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存编辑后的后台菜单',
                'name' => 'backend.menu.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除后台菜单',
                'name' => 'backend.menu.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],

            //权限
            [
                'display_name' => '权限列表界面',
                'name' => 'backend.permission.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '权限创建界面',
                'name' => 'backend.permission.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以创建新权限',
                'name' => 'backend.permission.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '权限编辑界面',
                'name' => 'backend.permission.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存编辑后的权限',
                'name' => 'backend.permission.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除权限',
                'name' => 'backend.permission.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],

            //角色
            [
                'display_name' => '角色列表界面',
                'name' => 'backend.role.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '角色创建界面',
                'name' => 'backend.role.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以创建新角色',
                'name' => 'backend.role.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '角色编辑界面',
                'name' => 'backend.role.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存编辑后的角色',
                'name' => 'backend.role.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除角色',
                'name' => 'backend.role.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '角色授权页面',
                'name' => 'backend.role.permission',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '角色授权保存',
                'name' => 'backend.role.permission',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],

            // 管理员
            [
                'display_name' => '管理员列表界面',
                'name' => 'backend.admin.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '管理员创建界面',
                'name' => 'backend.admin.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以创建新管理员',
                'name' => 'backend.admin.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '管理员编辑界面',
                'name' => 'backend.admin.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存编辑后的管理员',
                'name' => 'backend.admin.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除管理员',
                'name' => 'backend.admin.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],

            //前台导航菜 & 友情链接
            [
                'display_name' => '友情链接列表',
                'name' => 'backend.link.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '创建友情链接界面',
                'name' => 'backend.link.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '创建友情链接',
                'name' => 'backend.link.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '编辑友情链接界面',
                'name' => 'backend.link.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '保存友情链接的修改',
                'name' => 'backend.link.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除友情链接',
                'name' => 'backend.link.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],

            //系统设置
            [
                'display_name' => '系统设置列表界面',
                'name' => 'backend.setting.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '保存系统设置',
                'name' => 'backend.setting.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],

            //操作日志
            [
                'display_name' => '操作日志列表',
                'name' => 'backend.operation_log.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],

            //登陆日志
            [
                'display_name' => '登陆日志列表',
                'name' => 'backend.login_log.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],

            //文章
            [
                'display_name' => '文章列表',
                'name' => 'backend.article.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '文章创建界面',
                'name' => 'backend.article.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以创建新文章',
                'name' => 'backend.article.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '文章编辑界面',
                'name' => 'backend.article.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存编辑后的文章',
                'name' => 'backend.article.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除文章',
                'name' => 'backend.article.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '编辑文章内容界面',
                'name' => 'backend.article.content',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存文章内容',
                'name' => 'backend.article.set-content',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],

            // 文章评论
            [
                'display_name' => '评论列表界面',
                'name' => 'backend.comment.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除评论',
                'name' => 'backend.comment.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],

            //分类
            [
                'display_name' => '分类列表界面',
                'name' => 'backend.category.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '分类创建界面',
                'name' => 'backend.category.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以创建新分类',
                'name' => 'backend.category.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '分类编辑界面',
                'name' => 'backend.category.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存编辑后的分类',
                'name' => 'backend.category.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除分类',
                'name' => 'backend.category.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],

            //tag
            [
                'display_name' => 'tag列表界面',
                'name' => 'backend.tag.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => 'tag创建界面',
                'name' => 'backend.tag.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以创建新tag',
                'name' => 'backend.tag.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => 'tag编辑界面',
                'name' => 'backend.tag.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存编辑后的tag',
                'name' => 'backend.tag.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除tag',
                'name' => 'backend.tag.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            //会员列表
            [
                'display_name' => '会员列表界面',
                'name' => 'backend.member.index',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '会员创建界面',
                'name' => 'backend.member.create',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以创建新会员',
                'name' => 'backend.member.create',
                'method' => 'POST',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '会员编辑界面',
                'name' => 'backend.member.edit',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '是否可以保存编辑后的会员',
                'name' => 'backend.member.edit',
                'method' => 'PUT',
                'guard_name' => 'admin',
            ],
            [
                'display_name' => '删除会员',
                'name' => 'backend.member.destroy',
                'method' => 'GET',
                'guard_name' => 'admin',
            ],
        ];
        $date = date('Y-m-d H:i:s');

        foreach ($permissions as $permission) {
            $exists = Permission::where('name', $permission['name'])
                                                         ->where('method', $permission['method'])
                                                         ->exists();
            if (!$exists){
                $permission['created_at'] = $date;
                $permission['updated_at'] = $date;
                \DB::table('permissions')->insert($permission);
            }
        }
    }
}
